The present disclosure generally relates to cloud computing, and more specifically, to techniques for sharing artifacts on cloud computing platforms (e.g., such as a platform as a service (PaaS) cloud infrastructure).
Cloud computing services are increasingly being used by software developers to manage and develop complex applications. Platform as a Service (PaaS), for example, is one type of cloud computing platform that developers can use to deploy, run and manage applications without the complexity of building and maintaining the infrastructure associated with developing and launching applications. For example, PaaS providers can manage the supporting hardware, operating system, runtimes, supporting services, etc. for users' applications.
Once an application (or its artifacts) is uploaded to a PaaS cloud platform, the PaaS cloud platform generally controls the deployment and staging of the application through buildpacks. A buildpack, for example, generally provides a framework including a set of runtimes and middleware that can be used to run the application. When an application is first pushed, the PaaS cloud platform uses the buildpack to identify, compile, and bundle the application's dependencies (or resources), runtimes, etc., into a deployment package (referred to herein as a droplet) along with the application. Once created, the PaaS cloud platform installs the droplet including the application artifacts into an isolated container and starts the application.
PaaS can provide horizontal scalability (e.g., scale out) and/or vertical scalability (e.g., scale-up) services for applications. With horizontal scalability, for example, PaaS supports deployments at scale by allowing instances (e.g., copies) of an application to be added either manually or automatically when the traffic is high for a particular application. For example, for each new instance, the PaaS can create a new isolated container, install the droplet previously created for the application into the new container, and start the new instance.
As cloud computing moves to large hybrid cloud environments, however, performing scaling out in this manner can be inefficient. For example, there are barriers in current scaling out techniques to leveraging information gathered by previous instances of an application. Using the droplet (e.g., deployment package) as a reference example, the PaaS typically creates the droplet before the application has had a chance to run. As a result, when the PaaS creates new instances of an application using such droplet, the PaaS cannot leverage information from previous executions of instances of the application, resulting in the newly created instance paying the full startup and warmup cost.